package com.kailong.mapper.sys;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kailong.entity.sys.MenuConditionEntity;
import com.kailong.entity.sys.MenuEntity;
import com.kailong.mapper.CustomerMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;
import java.util.List;

@Mapper
public interface MenuMapper extends BaseMapper<MenuEntity>, CustomerMapper<MenuEntity, MenuConditionEntity> {

    /**
     * 查询菜单信息
     *
     * @param id 菜单ID
     * @return 菜单信息
     */
    MenuEntity findById(Long id);

    /**
     * 查询菜单信息
     *
     * @param ids 菜单ID
     * @return 菜单信息
     */
    List<MenuEntity> findByIds(@Param("ids") List<Long> ids);

    /**
     * 根据角色ID查询菜单列表
     *
     * @param roleIdList 角色ID集合
     * @return 菜单列表
     */
    List<MenuEntity> findMenuByRoleIdList(@Param("roleIdList") Collection<Long> roleIdList);

    /**
     * 根据条件查询菜单列表(不分页)
     *
     * @param condition 查询条件
     * @return 菜单列表
     */
    List<MenuEntity> searchByCondition(@Param("condition") MenuConditionEntity condition);
    /**
     * 根据条件查询菜单列表(分页)
     *
     * @param ids,menuEntity
     * @return 菜单列表
     */
    int deleteByIds(@Param("ids") List<Long> ids, @Param("menuEntity") MenuEntity menuEntity);
    /**
     * 根据条件统计菜单数量
     *
     * @param condition 查询条件
     * @return 菜单数量
     */
    int countByCondition(@Param("condition") MenuConditionEntity condition);

    /**
     * 修改菜单
     *
     * @param menuEntity 菜单信息
     * @return 结果
     */
    int update(MenuEntity menuEntity);

}
